//
//  适配器模式的通用代码.swift
//  AdapterPattern
//
//  Created by mac on 2017/11/14.
//  Copyright © 2017年 RRC. All rights reserved.
//

import Foundation

//目标角色
protocol Target {
    //目标角色有自己的方法
    func request()
}

//目标角色的实现类
public class ConcreteTarget:Target{
    func request() {
        print("if you need any help,pls call me!")
    }
}


//源角色:需要把谁转换成目标角色，这个“谁”就是源角色。
public class Adaptee{
    //原有的业务逻辑
    func doSomething(){
        print("I'm kind of busy,leave me alone,pls!")
    }
}

//适配器角色
public class Adapter:Adaptee,Target{
    func request() {
        super.doSomething()
    }
}

//场景类
public class Client{
    public func main(args:[String]){
        //原有的业务逻辑
        let target:Target = ConcreteTarget()
        target.request()
        //现在增加了适配器角色后的业务逻辑
        let target2:Target = Adapter()
        target2.request()
    }
}

/**
适配器模式的优点：
    1､适配器模式可以让两个没有任何关系的类在一起运行，只要适配器这个角色能够搞定他你们就成。
    2､增加了类的透明性。
    3､提高了类的复用度。
    4､灵活性非常好。
 应用场景：当需要修改一个已经投产中的接口时，适配器模式就能是最适合你的模式。
 */

